const stateInvariant = {
  // 项目通用常量
  operation: [
    { value: 'add', label: '添加' },
    { value: 'edit', label: '编辑' },
    { value: 'detail', label: '详情' },
    { value: 'audit', label: '审核' }
  ],
  // 基础信息 --> 仓库管理
  warehouseStatusList: [
    { value: '0', label: '启用' },
    { value: '1', label: '停用' }
  ],
  // 基础信息 --> 承运商管理，新增、编辑 - 平台类型状态列表
  platformType: [
    { value: 'CAINIAO', label: '菜鸟' },
    { value: 'JD', label: '京东' },
    { value: 'PDD', label: '拼多多' }
  ],
  // 出库管理 --> 出库管理 任务状态
  taskStatusList: [
    { value: '1', label: '未执行' },
    { value: '2', label: '执行中' },
    { value: '3', label: '执行完成' }
  ],
  // 出库管理 --> 订单处理
  orderStatus: [
    { value: '0', label: '新增' },
    { value: '1', label: '待分配' },
    { value: '2', label: '部分分配' },
    { value: '3', label: '已分配' },
    { value: '6', label: '待拣货' },
    { value: '7', label: '待复核' },
    { value: '8', label: '复核中' },
    { value: '9', label: '待出库' },
    { value: '11', label: '出库完成' },
    { value: '12', label: '拣货中' },
    { value: '13', label: '拣货完成' }
  ],
  // 出库管理 --> 拣货单详情
  pickingGoodsStatus: [
    { value: '0', label: '新增' },
    { value: '1', label: '待分配' },
    { value: '2', label: '部分分配' },
    { value: '3', label: '已分配' },
    { value: '4', label: '已作废' },
    { value: '5', label: '生成波次中' },
    { value: '6', label: '待拣货' },
    { value: '7', label: '待复核' },
    { value: '8', label: '复核中' },
    { value: '9', label: '待出库' },
    { value: '11', label: '出库完成' },
    { value: '12', label: '拣货中' },
    { value: '13', label: '拣货完成' }
  ],
  // 库内管理 --> 待返架
  lockStatusList: [
    { value: '0', label: '否' },
    { value: '1', label: '是' }
  ],
  // 库内管理 --> 差异管理
  differenceStatusList: [
    { value: '0', label: '待审核' },
    { value: '1', label: '已审核' },
    { value: '2', label: '驳回' }
  ]
}
/**
 * 获取字典和枚举
 * @param  {String} type enum/dict 枚举还是字典
 * @param  {String} key 要获取的数据
 * @return {String} 格式化过后的数据
 * @desc dict字典{}花括号括起来，以键值对形式存取{name: '张三'} 、enum枚举将可迭代类型的索引及其对应的元素返回[1,2,3]
 */

export default function getEnumsOrDict(type, key, stateVariable) {
  if (!['dict', 'enum'].includes(type)) {
    console.error('type参数错误！只能是enum/dict')
    return false
  }
  if (stateVariable) {
    // 枚举数据来自于接口返回
    const dicData = new Map()
    key.forEach((r) => {
      dicData.set(r[stateVariable[0]], r[stateVariable[1]])
    })
    return dicData
  } else {
    if (key instanceof Array && key.length > 0) {
      const result = []
      key.forEach((t) => {
        if (type === 'enum') {
          result.push(stateInvariant[t])
        } else {
          const dicData = {}
          stateInvariant[t].forEach((r) => {
            dicData[r.value] = r.label
          })
          result.push(dicData)
        }
      })
      return result
    } else {
      if (!key && key === '') return

      if (type === 'enum') {
        return stateInvariant[key]
      } else {
        const dicData = new Map()
        stateInvariant[key].forEach((r) => {
          dicData.set(r.value, r.label)
        })
        return dicData
      }
    }
  }
}
